Eggplant DAIでのサブモデルの使用
大規模または複雑なアプリケーションやシステムをモデリングする際、モデルの作成にモジュラーなアプローチを取ると便利かもしれません。モジュラリゼーションを促進するため、Eggplant DAIでは_サブモデル_を使用することができます。サブモデルは、他のモデルのActionに接続するモデルで、コードスニペットを接続するのと同じ方法で接続します。これにより、より小さいモジュラー化されたパーツから大きなモデルを構築することができます。
サブモデルの使用
モデルを作成する際、アプリケーションの個々のセクションやサブシステムに焦点を当てて、テストする必要がある全体像を徐々に作り上げることがあります。このアプローチを最初から取ると、アプリケーションのすべてのパーツをまとめるために、Eggplant DAIでサブモデルを使用する方法がわかりやすくなるはずです。
このアプローチを用いると、アプリケーションのセクションを独立してテストすることができ、また独立したモデルをトップレベルのモデルにまとめて、セクションのモデルをサブモデルとしてリンクすることで包括的なテストを行うことができます。Action内でサブモデルをリンクすることで、アプリケーションを記述するためのモデルの異なるレベルの階層を定義することができます。Actionを選択する際、Eggplant DAIのパス選択アルゴリズムは、まだ通過していないサブモデル内のパスを考慮します。
モデルActionにサブモデルをリンクする
アクセスできる限り、どのモデルでもサブモデルとして使用することができます。
モデルを編集すると、Submodelsタブに、サブモデルとして利用可能なすべてのモデルが表示されます。表示されるモデルの数を絞り込むには、フィルターボックスにモデル名を入力するだけです。
モデルをサブモデルとして追加するには:
- モデルで、Submodelsタブを選択し、サブモデルを接続したいActionを選択します。
- Submodelsタブで、接続したいモデル名の隣にある矢印をクリックします。
各Actionには左上に2つのドットがあります。サブモデルが接続されていると、右側のドットが緑色に変わります。左側のドットはスニペットが接続されていることを示します。緑色のドットの上にカーソルを置くと、どのスニペットやサブモデルが接続されているかを示すツールチップが表示されます。
スニペットとサブモデルを同じActionに接続することができます。スニペットとサブモデルが同じActionに接続されている場合、先にスニペットが実行され、次にサブモデルが実行されます。
サブモデルを使ったテストの実行
サブモデルを用いたテストの実行は、Eggplant DAIの他のテスト実行と何も変わりません。ツールバーでRunをクリックし、モデル実行のオプションを選択すると、モデルは初期stateから始まり、モデルを通じてパスを選択します。サブモデルが接続されたActionを選択すると、実行はその二次モデルに切り替わります。
コンソールでは、モデルがサブモデルを呼び出し、そこで何が実行されているかを見ることができます。ただし、モデルビューは変わらず、サブモデルを呼び出した単一のハイライトされたActionを表示します。
親モデルを通じて実行されるサブモデルは、親モデルと同じSuiteを使用します。
サブモデルが成功して終了すると、親モデルの実行がその地点から再開されます。これは、接続され たスニペットの場合と同じです。
テスト実行からサブモデルを除外したい場合は、Action PropertiesタブでDisabledを選択します。
また、向けられたテストケースにサブモデルを含めることもできます。
サブモデルとParameterの使用
サブモデルと親モデルの間でParameter値を渡すことができます。たとえば、サブモデル内で特定のパスを設定するためにこの機能を使用することがあります。または、実行中にサブモデルの特定のstateやActionがヒットしたかどうかをチェックするために戻り値を使用することができます。
親モデルとサブモデルの両方でParameterをグローバルParameterとして定義する必要があります。つまり、Parameter名と定義は両方のモデルで一致する必要があります。そのようなParameterは、他のグローバルParameterと同様に作成できます。stateやActionが選択されていないstateで、以下のオプションのいずれかを選択します:
- モデルワークスペースで右クリックし、NewParameterを選択します。
- 右側のサイドバーのGlobal Propertiesタブで、global ParameterセクションでNewをクリックします。
新しいParameterは、global Parameterセクションにデフォルトの名前で行として表示されます。必要に応じてName、Type、Generatedメソッド、Initial Valueをカスタマイズするためにフィールドをクリックできます。
親モデルとサブモデルの両方でParameterを作成する必要があることを忘れないでください。
Parameterを作成した後、親モデルでそれらをサブモデルに関連付ける必要があります:
-
ワークスペースでサブモデルが添付されているActionを選択します。
-
右ペインのAction PropertiesタブのSubmodels Called by Actionセクションで、添付されたサブモデルを右クリックし、Edit Passthrough Parametersを選択します。
-
Submodel I/O Editorダイアログボックスで、サブモデルと親モデル間で渡したいParameterに対してselected列のチェックボックスを選択します。OKをクリックしてダイアログボックスを閉じ、選択した内容を保存します。
サブモデルに渡すParameterに値がある場合、その値はサブモデルのParameterに設定されている可能性のある初期値を上書きします。
Parameter値がサブモデルの実行中に更新され、親モデルに戻されると、新しい値はサブモデルが終了するときに親モデルのParameterを上書きします。